/*
 * Quadruple.h
 *
 *  Created on: Nov 25, 2011
 *      Author: bkoziak
 */

#ifndef QUADRUPLE_H_
#define QUADRUPLE_H_

#include "Symbol.h"

class Quadruple {
private:
	int typOperatora;
	Symbol* arg1;
	Symbol* arg2;
	Symbol* rezultat;
	string label;
	string rezultatSkoku;
public:
	Quadruple();
	Quadruple(int typOperatora, Symbol* arg1, Symbol* arg2);
	Quadruple(int typOperatora, Symbol* arg1, Symbol* arg2,	Symbol* rezultat);
	Quadruple(int typOperatora, Symbol* arg1, Symbol* arg2, string rezultatSkoku);
	string getAdres(Symbol* s);
	Symbol::TYP_ZMIENNEJ getTypZmiennej();
	string getAsm();

    Symbol *getArg1() const;
    Symbol *getArg2() const;
    string getLabel() const;
    Symbol *getRezultat() const;
    string getRezultatSkoku() const;
    int getTypOperatora() const;
    void setArg1(Symbol *arg1);
    void setArg2(Symbol *arg2);
    void setLabel(string label);
    void setRezultat(Symbol *rezultat);
    void setRezultatSkoku(string rezultatSkoku);
    void setTypOperatora(int typOperatora);
    string getBezposredniAdres(Symbol* symbol);
};

#endif /* QUADRUPLE_H_ */
